package persistencia;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import modelo.Produto;

public class ProdutoDAO extends Conexao {

     private CategoriaProdutoDAO categoriaProdutoDAO;
    public ProdutoDAO() throws SQLException {
        super();
        categoriaProdutoDAO = new CategoriaProdutoDAO();
    }

    public void inserir(Produto produto) throws SQLException {
        this.setPreparedStatement("insert into gastro_produto(id, codigointerno, nome, valor, idcategoriaproduto) " + "values (nextval('gastro_produto_id_seq'), ?, ?, ?, ?)");
        this.getPreparedStatement().setString(1, produto.getCodigoInterno());
        this.getPreparedStatement().setString(2, produto.getNome());
        this.getPreparedStatement().setFloat(3, produto.getValor());
        this.getPreparedStatement().setInt(4, produto.getCategoria().getId());
        this.getPreparedStatement().executeUpdate();
    }

    public void alterar(Produto produto) throws SQLException {
        this.setPreparedStatement("update gastro_produto set codigointerno = ?, nome = ?, valor = ?, idcategoriaproduto = ? where id = ?");
        this.getPreparedStatement().setString(1, produto.getCodigoInterno());
        this.getPreparedStatement().setString(2, produto.getNome());
        this.getPreparedStatement().setFloat(3, produto.getValor());
        this.getPreparedStatement().setInt(4, produto.getCategoria().getId());
         this.getPreparedStatement().setInt(5, produto.getId());
        
        this.getPreparedStatement().executeUpdate();
    }

    public void excluir(Produto produto) throws SQLException {
        this.setPreparedStatement("delete from gastro_produto where id = ?");
        this.getPreparedStatement().setInt(1, produto.getId());
        this.getPreparedStatement().executeUpdate();
    }

//    public Produto getProdutoPorID(int id) throws SQLException {
//        Produto produto = new Produto();
//        this.setPreparedStatement("select * from gastro_produto where id = ?");
//        this.getPreparedStatement().setInt(1, id);
//        this.setResultSet(getPreparedStatement().executeQuery());
//        while (this.getResultSet().next()) {
//            produto.setId(getResultSet().getInt("id"));
//            produto.setCodigoInterno(getResultSet().getString("codigointerno"));
//            produto.setNome(getResultSet().getString("nome"));
//            produto.setValor(getResultSet().getFloat("valor"));
//            produto.setCategoria(getResultSet().getInt("idcategoriaproduto"));
//   
//        }
//        return produto;
//    }
//
//    public Produto getProdutoPorDescricao(String descricao) throws SQLException {
//        Produto produto = new Produto();
//        this.setPreparedStatement("select * from gastro_produto where descricao = ?");
//        this.getPreparedStatement().setString(1, descricao);
//        this.setResultSet(getPreparedStatement().executeQuery());
//        while (getResultSet().next()) {
//           produto.setId(getResultSet().getInt("id"));
//            produto.setCodigoInterno(getResultSet().getString("codigointerno"));
//            produto.setNome(getResultSet().getString("nome"));
//            produto.setValor(getResultSet().getFloat("valor"));
//            produto.setCategoria(getResultSet().getInt("idcategoriaproduto"));
//        }
//        return produto;
//    }
    //Listar
    public List<Produto> getProdutos(String sql) throws SQLException {
        List<Produto> produtos = new ArrayList<>();
        this.setPreparedStatement(sql);
        this.setResultSet(this.getPreparedStatement().executeQuery());
        while (this.getResultSet().next()) {
            Produto produto = new Produto();
            produto.setId(this.getResultSet().getInt("id"));
            produto.setCodigoInterno(this.getResultSet().getString("codigointerno"));
            produto.setNome(this.getResultSet().getString("nome"));
            produto.setValor(this.getResultSet().getFloat("valor"));
            produto.setCategoria(categoriaProdutoDAO.getCategoriaProdutoPorID(this.getResultSet().getInt("idcategoriaproduto")));
            produtos.add(produto);
        }
        return produtos;
    }
   
}
